package puf.m2.automaton;

public interface Automaton {
    State createState();
    State createStateWithId(int id);
    State getStateWithID(int id);
    void addState(State state);
    void removeState(State state);
    void addFinalState(State state);
    void removeFinalState(State state);
    boolean isFinalState(State state);
    State[] getFinalStates();
    boolean isInitialState(State state);
    State setInitialState(State state);
    State getInitialState();
    State[] getStates();
    void addTransition(Transition trans);
    void removeTransition(Transition trans);
    Transition[] getTransitions();
    Transition[] getTransitionsFromState(State state);
    Transition[] getTransitionsToState(State state);
    Transition[] getTransitionsFromStateToState(State from, State to);
    Automaton clone();
}
